import logging
import time
import os
from config.config import LOGS_DIR
from logging.handlers import TimedRotatingFileHandler


def get_log(name='test_log'):
    logger = logging.getLogger(name)

    # 如果logger已经有handlers，直接返回（避免重复添加）
    if logger.handlers:
        return logger

    # 确保日志目录存在
    os.makedirs(LOGS_DIR, exist_ok=True)

    # 设置日志格式
    formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')


    log_filename = os.path.join(LOGS_DIR, 'test_log')
    handler = TimedRotatingFileHandler(
        filename=log_filename,
        when='midnight',  # 每天午夜轮转
        interval=1,
        backupCount=2,  # 保留2个备份文件
        encoding='utf-8'
    )
    handler.setFormatter(formatter)
    handler.suffix = "%Y-%m-%d"  # 备份文件后缀
    # 控制台处理器
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(formatter)

    # 设置日志级别
    logger.setLevel(logging.DEBUG)

    # 添加处理器
    logger.addHandler(handler)
    logger.addHandler(console_handler)

    # 防止日志重复传播到root logger
    logger.propagate = False

    return logger


# 使用示例
if __name__ == "__main__":
    log = get_log()
    log.info("这是一条测试日志")  # 现在日志会正常写入文件